import book.BookList;
import user.AdminUesr;
import user.NomalUser;
import user.User;

import java.util.Scanner;

public class Main {
/**
 * 1、创建一个静态方法login，用来确认是普通用户还是管理员，返回值为父类User
 * 1.1调用库函数Scanner用来输出，提示下一步操作进行交互，输入用户名
 * 1.2提示下一步的操作，根据输入来确认是普通用户还是管理员
 * 1.3if语句判断输入的值，根据输入的值返回
 * 1.4创建一个管理员对象或者普通用户对象，传参name
 * 1.5执行对象的构造方法，User接收返回值（向上转型）
 */
    public static User login() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你的姓名：");
        String name = scanner.nextLine();
        System.out.println("请输入你的身份: 1 --》 管理员  0 --》 普通用户");
        while (true) {
            int choice = scanner.nextInt();
            if (choice == 1 || choice == 0) {
                if (choice == 1) {
                    return new AdminUesr(name);
                } else {
                    return new NomalUser(name);
                }
            } else {
                System.out.println("输入错误请重新输入");

            }
        }
    }

    /**
     * 2、main执行程序
     * 2.1实例化一个bookList对象，构造BookList，进行一个初始化
     * 2.3定义一个user类型的变量user调用login方法，可以确认用户是普通用户还是管理员
     * 2.4设置一个while循环确保程序可以重复多次操作，根据不同的用户调用不同的menu（）方法
     * 2.4重写了父类方法，（多态）
     * 2.5user调用父类本身的方法doOperation，传参choice和bookList
     * 2.5choice = 输入的数值 = 要选择的操作，bookList = 数组 = 书架
     * 执行完一次回到循环开始的时候
     * @param args
     */
    public static void main(String[] args) {

        BookList bookList = new BookList();

        User user = login();
        while (true) {
            int choice = user.menu();

            user.doOperation(choice, bookList);

           /* System.out.println(choice);
            System.out.println(user);*/
        }
    }

}